home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / PCCardAdapterPlugin.p < prev    next >
Encoding:
Text File  |  1998-02-12  |  9.7 KB  |  280 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        PCCardAdapterPlugin.p
  3.  
  4.      Contains:    PC Card Socket Service Plug-In Programming Interface
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.1
  8.  
  9.      Copyright:    © 1996-1998 by Apple Computer, Inc. and SystemSoft Corporation. All rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT PCCardAdapterPlugin;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __PCCARDADAPTERPLUGIN__}
  28. {$SETC __PCCARDADAPTERPLUGIN__ := 1}
  29.  
  30. {$I+}
  31. {$SETC PCCardAdapterPluginIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __MACTYPES__}
  35. {$I MacTypes.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __NAMEREGISTRY__}
  38. {$I NameRegistry.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __INTERRUPTS__}
  41. {$I Interrupts.p}
  42. {$ENDC}
  43. {$IFC UNDEFINED __PCCARD__}
  44. {$I PCCard.p}
  45. {$ENDC}
  46.  
  47.  
  48. {$PUSH}
  49. {$ALIGN POWER}
  50. {$LibExport+}
  51.  
  52.  
  53. {------------------------------------------------------------------------------------
  54.   Types
  55. ------------------------------------------------------------------------------------}
  56. {     Interrupt Status Change bits }
  57.  
  58.  
  59. CONST
  60.     kSCBatteryDead                = $01;                            {  Battery Dead Status Change }
  61.     kSCBatteryLow                = $02;                            {  Battery Warning Status Change }
  62.     kSCReady                    = $04;                            {  Ready Status Change }
  63.     kSCCardDetect                = $08;                            {  Card Detect Status Change }
  64.     kSCCardEjected                = $10;                            {  Card Ejected }
  65.     kSCStatusChange                = $20;                            {  PC Card Status Change Signal Asserted }
  66.     kSCRingIndicate                = $40;                            {  PC Card Ring Indicate Signal Asserted }
  67.  
  68.  
  69. {    IRQ bits }
  70.     kIRQLevelMask                = $1F;
  71.     kIRQInvalid                    = $20;
  72.     kIRQHigh                    = $40;
  73.     kIRQEnable                    = $80;
  74.  
  75.  
  76. {     bits for adapter characteristics flags }
  77.  
  78.     SS_ADPT_FLG_IND                = $01;                            {  indicators for write-protect, card lock, }
  79.                                                                 {  battery status, busy status, and XIP }
  80.                                                                 {  are shared for all sockets }
  81.     SS_ADPT_FLG_PWR                = $02;                            {  if set indicates that the sockets }
  82.                                                                 {  share the same power control }
  83.     SS_ADPT_FLG_DBW                = $04;                            {  all windows on the adapter must use }
  84.                                                                 {  the same Data Bus Width }
  85.     SS_ADPT_FLG_CARDBUS            = $08;                            {  all sockets are CardBus PC Card capable }
  86.     SS_ADPT_FLG_DMA                = $10;                            {  the adapter has DMA capability }
  87.                                                                 {     bits for adapter power characteristics }
  88.     SS_ADPT_FLG_V33                = $20;                            {  adapter supports 3.3 volt power to socket }
  89.     SS_ADPT_FLG_V50                = $40;                            {  adapter supports 5.0 volt power to socket }
  90.     SS_ADPT_FLG_V12                = $80;                            {  adapter supports 12.0 volt power to socket }
  91.  
  92.  
  93. {------------------------------------------------------------------------------------
  94.   Calls exported by the Family
  95. ------------------------------------------------------------------------------------}
  96. FUNCTION CSReportStatusChange({CONST}VAR adapterRef: RegEntryID; whichSocket: PCCardSocket; statusChange: PCCardSCEvents; socketStatus: PCCardSocketStatus): OSStatus; C;
  97. {------------------------------------------------------------------------------------
  98.   Plugin Dispatch Table
  99. ------------------------------------------------------------------------------------}
  100.  
  101. TYPE
  102. {$IFC TYPED_FUNCTION_POINTERS}
  103.     SSValidateHardwareProc = FUNCTION({CONST}VAR deviceID: RegEntryID): OSStatus; C;
  104. {$ELSEC}
  105.     SSValidateHardwareProc = ProcPtr;
  106. {$ENDC}
  107.  
  108. {$IFC TYPED_FUNCTION_POINTERS}
  109.     SSInitializeProc = FUNCTION({CONST}VAR deviceID: RegEntryID; replacingOldDriver: BOOLEAN): OSStatus; C;
  110. {$ELSEC}
  111.     SSInitializeProc = ProcPtr;
  112. {$ENDC}
  113.  
  114. {$IFC TYPED_FUNCTION_POINTERS}
  115.     SSSuspendProc = FUNCTION({CONST}VAR deviceID: RegEntryID): OSStatus; C;
  116. {$ELSEC}
  117.     SSSuspendProc = ProcPtr;
  118. {$ENDC}
  119.  
  120. {$IFC TYPED_FUNCTION_POINTERS}
  121.     SSResumeProc = FUNCTION({CONST}VAR deviceID: RegEntryID): OSStatus; C;
  122. {$ELSEC}
  123.     SSResumeProc = ProcPtr;
  124. {$ENDC}
  125.  
  126. {$IFC TYPED_FUNCTION_POINTERS}
  127.     SSFinalizeProc = FUNCTION({CONST}VAR deviceID: RegEntryID; beingReplaced: BOOLEAN): OSStatus; C;
  128. {$ELSEC}
  129.     SSFinalizeProc = ProcPtr;
  130. {$ENDC}
  131.  
  132. {$IFC TYPED_FUNCTION_POINTERS}
  133.     SSInquireAdapterProc = FUNCTION(VAR numberOfSockets: ItemCount; VAR numberOfWindows: ItemCount; VAR numberOfBridgeWindow: ItemCount; VAR capabilities: PCCardAdapterCapabilities): OSStatus; C;
  134. {$ELSEC}
  135.     SSInquireAdapterProc = ProcPtr;
  136. {$ENDC}
  137.  
  138. {$IFC TYPED_FUNCTION_POINTERS}
  139.     SSInquireSocketProc = FUNCTION(socket: PCCardSocket; VAR numberOfWindows: ItemCount; VAR supportedSocketStatus: PCCardSocketStatus; VAR supportedStatusChange: PCCardSCEvents): OSStatus; C;
  140. {$ELSEC}
  141.     SSInquireSocketProc = ProcPtr;
  142. {$ENDC}
  143.  
  144. {$IFC TYPED_FUNCTION_POINTERS}
  145.     SSGetSocketProc = FUNCTION(socket: PCCardSocket; VAR Vcc: PCCardVoltage; VAR Vpp: PCCardVoltage; VAR Vs: PCCardVoltage; VAR socketIF: PCCardInterfaceType; VAR customIFID: PCCardCustomInterfaceID; VAR socketStatus: PCCardSocketStatus; VAR SCEventsMask: PCCardSCEvents; VAR IRQ: PCCardIRQ; VAR DMA: PCCardDMA): OSStatus; C;
  146. {$ELSEC}
  147.     SSGetSocketProc = ProcPtr;
  148. {$ENDC}
  149.  
  150. {$IFC TYPED_FUNCTION_POINTERS}
  151.     SSSetSocketProc = FUNCTION(socket: PCCardSocket; Vcc: PCCardVoltage; Vpp: PCCardVoltage; socketIF: PCCardInterfaceType; customIFID: PCCardCustomInterfaceID; statusReset: PCCardSocketStatus; SCEventsMask: PCCardSCEvents; IRQ: PCCardIRQ; DMA: PCCardDMA): OSStatus; C;
  152. {$ELSEC}
  153.     SSSetSocketProc = ProcPtr;
  154. {$ENDC}
  155.  
  156. {$IFC TYPED_FUNCTION_POINTERS}
  157.     SSResetSocketProc = FUNCTION(socket: PCCardSocket): OSStatus; C;
  158. {$ELSEC}
  159.     SSResetSocketProc = ProcPtr;
  160. {$ENDC}
  161.  
  162. {$IFC TYPED_FUNCTION_POINTERS}
  163.     SSGetStatusProc = FUNCTION(socket: PCCardSocket; VAR currentStatus: PCCardSocketStatus; VAR changedStatus: PCCardSocketStatus): OSStatus; C;
  164. {$ELSEC}
  165.     SSGetStatusProc = ProcPtr;
  166. {$ENDC}
  167.  
  168. {$IFC TYPED_FUNCTION_POINTERS}
  169.     SSInquireWindowProc = FUNCTION(VAR socket: PCCardSocket; window: PCCardWindow; VAR windowState: PCCardWindowState; VAR windowSize: PCCardWindowSize; VAR windowAlign: PCCardWindowAlign): OSStatus; C;
  170. {$ELSEC}
  171.     SSInquireWindowProc = ProcPtr;
  172. {$ENDC}
  173.  
  174. {$IFC TYPED_FUNCTION_POINTERS}
  175.     SSGetWindowProc = FUNCTION(VAR socket: PCCardSocket; window: PCCardWindow; VAR windowState: PCCardWindowState; VAR startAddress: PhysicalAddress; VAR windowSize: PCCardWindowSize; VAR windowOffset: PCCardWindowOffset; VAR memSpeed: PCCardAccessSpeed): OSStatus; C;
  176. {$ELSEC}
  177.     SSGetWindowProc = ProcPtr;
  178. {$ENDC}
  179.  
  180. {$IFC TYPED_FUNCTION_POINTERS}
  181.     SSSetWindowProc = FUNCTION(socket: PCCardSocket; window: PCCardWindow; windowState: PCCardWindowState; startAddress: PhysicalAddress; windowSize: PCCardWindowSize; windowOffset: PCCardWindowOffset; memSpeed: PCCardAccessSpeed): OSStatus; C;
  182. {$ELSEC}
  183.     SSSetWindowProc = ProcPtr;
  184. {$ENDC}
  185.  
  186. {$IFC TYPED_FUNCTION_POINTERS}
  187.     SSGetWindowOffsetProc = FUNCTION(VAR socket: PCCardSocket; window: PCCardWindow; VAR windowState: PCCardWindowState; VAR windowOffset: PCCardWindowOffset): OSStatus; C;
  188. {$ELSEC}
  189.     SSGetWindowOffsetProc = ProcPtr;
  190. {$ENDC}
  191.  
  192. {$IFC TYPED_FUNCTION_POINTERS}
  193.     SSSetWindowOffsetProc = FUNCTION(socket: PCCardSocket; window: PCCardWindow; windowState: PCCardWindowState; windowOffset: PCCardWindowOffset): OSStatus; C;
  194. {$ELSEC}
  195.     SSSetWindowOffsetProc = ProcPtr;
  196. {$ENDC}
  197.  
  198. {$IFC TYPED_FUNCTION_POINTERS}
  199.     SSInquireBridgeWindowProc = FUNCTION(VAR socket: PCCardSocket; window: PCCardWindow; VAR windowState: PCCardWindowState; VAR windowSize: PCCardWindowSize; VAR windowAlign: PCCardWindowAlign): OSStatus; C;
  200. {$ELSEC}
  201.     SSInquireBridgeWindowProc = ProcPtr;
  202. {$ENDC}
  203.  
  204. {$IFC TYPED_FUNCTION_POINTERS}
  205.     SSGetBridgeWindowProc = FUNCTION(VAR socket: PCCardSocket; window: PCCardWindow; VAR windowState: PCCardWindowState; VAR startAddress: PhysicalAddress; VAR windowSize: PCCardWindowSize): OSStatus; C;
  206. {$ELSEC}
  207.     SSGetBridgeWindowProc = ProcPtr;
  208. {$ENDC}
  209.  
  210. {$IFC TYPED_FUNCTION_POINTERS}
  211.     SSSetBridgeWindowProc = FUNCTION(socket: PCCardSocket; window: PCCardWindow; windowState: PCCardWindowState; startAddress: PhysicalAddress; windowSize: PCCardWindowSize): OSStatus; C;
  212. {$ELSEC}
  213.     SSSetBridgeWindowProc = ProcPtr;
  214. {$ENDC}
  215.  
  216. {$IFC TYPED_FUNCTION_POINTERS}
  217.     SSGetInterruptSetMemberProc = FUNCTION(socket: PCCardSocket; VAR interruptSetMember: InterruptSetMember): OSStatus; C;
  218. {$ELSEC}
  219.     SSGetInterruptSetMemberProc = ProcPtr;
  220. {$ENDC}
  221.  
  222. {$IFC TYPED_FUNCTION_POINTERS}
  223.     SSEjectCardProc = FUNCTION(socket: PCCardSocket): OSStatus; C;
  224. {$ELSEC}
  225.     SSEjectCardProc = ProcPtr;
  226. {$ENDC}
  227.  
  228.  
  229. CONST
  230.     kServiceTypePCCardAdapter    = 'sock';
  231.     kPCCardAdapterPluginVersion    = $00000001;
  232.     kPCCardAdapterPluginCurrentVersion = $00000001;
  233.  
  234.  
  235. TYPE
  236.     PCCardAdapterPluginHeaderPtr = ^PCCardAdapterPluginHeader;
  237.     PCCardAdapterPluginHeader = RECORD
  238.         version:                UInt32;
  239.         reserved1:                UInt32;
  240.         reserved2:                UInt32;
  241.         reserved3:                UInt32;
  242.     END;
  243.  
  244.     PCCardAdapterPluginDispatchTablePtr = ^PCCardAdapterPluginDispatchTable;
  245.     PCCardAdapterPluginDispatchTable = RECORD
  246.         header:                    PCCardAdapterPluginHeader;
  247.         validateHardware:        SSValidateHardwareProc;
  248.         initialize:                SSInitializeProc;
  249.         suspend:                SSSuspendProc;
  250.         resume:                    SSResumeProc;
  251.         finalize:                SSFinalizeProc;
  252.         inquireAdapter:            SSInquireAdapterProc;
  253.         inquireSocket:            SSInquireSocketProc;
  254.         getSocket:                SSGetSocketProc;
  255.         setSocket:                SSSetSocketProc;
  256.         resetSocket:            SSResetSocketProc;
  257.         getStatus:                SSGetStatusProc;
  258.         inquireWindow:            SSInquireWindowProc;
  259.         getWindow:                SSGetWindowProc;
  260.         setWindow:                SSSetWindowProc;
  261.         getWindowOffset:        SSGetWindowOffsetProc;
  262.         setWindowOffset:        SSSetWindowOffsetProc;
  263.         inquireBridgeWindow:    SSInquireBridgeWindowProc;
  264.         getBridgeWindow:        SSGetBridgeWindowProc;
  265.         setBridgeWindow:        SSSetBridgeWindowProc;
  266.         getInterruptSetMember:    SSGetInterruptSetMemberProc;
  267.         ejectCard:                SSEjectCardProc;
  268.     END;
  269.  
  270. {$ALIGN RESET}
  271. {$POP}
  272.  
  273. {$SETC UsingIncludes := PCCardAdapterPluginIncludes}
  274.  
  275. {$ENDC} {__PCCARDADAPTERPLUGIN__}
  276.  
  277. {$IFC NOT UsingIncludes}
  278.  END.
  279. {$ENDC}
  280.